{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# German Credit Risk - Credit Classification"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Supervised: XGBoost / TensorFlow\n",
    "\n",
    "Unsupervised: DBScan / K-means"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Kaggle Link: https://www.kaggle.com/uciml/german-credit"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 282,
   "metadata": {},
   "outputs": [],
   "source": [
    "# IMPORTS\n",
    "import pandas as pd\n",
    "import patsy\n",
    "import matplotlib.pyplot as plt\n",
    "import numpy as np\n",
    "import seaborn as sns\n",
    "from sklearn.model_selection import train_test_split\n",
    "# from sklearn.pipeline import Pipeline\n",
    "from sklearn.preprocessing import StandardScaler\n",
    "from sklearn.linear_model import LogisticRegression\n",
    "from sklearn.metrics import classification_report, confusion_matrix\n",
    "from sklearn.grid_search import GridSearchCV"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 283,
   "metadata": {},
   "outputs": [],
   "source": [
    "df = pd.read_csv('german_credit_risk.csv', index_col=0)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 143,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>Age</th>\n",
       "      <th>Sex</th>\n",
       "      <th>Job</th>\n",
       "      <th>Housing</th>\n",
       "      <th>Saving accounts</th>\n",
       "      <th>Checking account</th>\n",
       "      <th>Credit amount</th>\n",
       "      <th>Duration</th>\n",
       "      <th>Purpose</th>\n",
       "      <th>Class</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>67</td>\n",
       "      <td>male</td>\n",
       "      <td>2</td>\n",
       "      <td>own</td>\n",
       "      <td>NaN</td>\n",
       "      <td>little</td>\n",
       "      <td>1169</td>\n",
       "      <td>6</td>\n",
       "      <td>radio/TV</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>22</td>\n",
       "      <td>female</td>\n",
       "      <td>2</td>\n",
       "      <td>own</td>\n",
       "      <td>little</td>\n",
       "      <td>moderate</td>\n",
       "      <td>5951</td>\n",
       "      <td>48</td>\n",
       "      <td>radio/TV</td>\n",
       "      <td>2</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>49</td>\n",
       "      <td>male</td>\n",
       "      <td>1</td>\n",
       "      <td>own</td>\n",
       "      <td>little</td>\n",
       "      <td>NaN</td>\n",
       "      <td>2096</td>\n",
       "      <td>12</td>\n",
       "      <td>education</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>45</td>\n",
       "      <td>male</td>\n",
       "      <td>2</td>\n",
       "      <td>free</td>\n",
       "      <td>little</td>\n",
       "      <td>little</td>\n",
       "      <td>7882</td>\n",
       "      <td>42</td>\n",
       "      <td>furniture/equipment</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>53</td>\n",
       "      <td>male</td>\n",
       "      <td>2</td>\n",
       "      <td>free</td>\n",
       "      <td>little</td>\n",
       "      <td>little</td>\n",
       "      <td>4870</td>\n",
       "      <td>24</td>\n",
       "      <td>car</td>\n",
       "      <td>2</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "   Age     Sex  Job Housing Saving accounts Checking account  Credit amount  \\\n",
       "0   67    male    2     own             NaN           little           1169   \n",
       "1   22  female    2     own          little         moderate           5951   \n",
       "2   49    male    1     own          little              NaN           2096   \n",
       "3   45    male    2    free          little           little           7882   \n",
       "4   53    male    2    free          little           little           4870   \n",
       "\n",
       "   Duration              Purpose  Class  \n",
       "0         6             radio/TV      1  \n",
       "1        48             radio/TV      2  \n",
       "2        12            education      1  \n",
       "3        42  furniture/equipment      1  \n",
       "4        24                  car      2  "
      ]
     },
     "execution_count": 143,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df.head()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "**Age** (numeric)\n",
    "\n",
    "**Sex** (text: male, female)\n",
    "\n",
    "**Job** (numeric: 0 - unskilled and non-resident, 1 - unskilled and resident, 2 - skilled, 3 - highly skilled)\n",
    "\n",
    "**Housing** (text: own, rent, or free)\n",
    "\n",
    "**Saving accounts** (text - little, moderate, quite rich, rich)\n",
    "\n",
    "**Checking account** (numeric, in DM - Deutsch Mark)\n",
    "\n",
    "**Credit amount** (numeric, in DM)\n",
    "\n",
    "**Duration** (numeric, in month)\n",
    "\n",
    "**Purpose** (text: car, furniture/equipment, radio/TV, domestic appliances, repairs, education, business, vacation/others)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 144,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "Age                   0\n",
       "Sex                   0\n",
       "Job                   0\n",
       "Housing               0\n",
       "Saving accounts     183\n",
       "Checking account    394\n",
       "Credit amount         0\n",
       "Duration              0\n",
       "Purpose               0\n",
       "Class                 0\n",
       "dtype: int64"
      ]
     },
     "execution_count": 144,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df.isnull().sum()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 145,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "# FILL NA OR MISSING VALUES IN CHECKING ACCOUNT / SAVINGS ACCOUNTS AS NOT APPLICABLE OR NO FACILITY\n",
    "df.fillna('Not Applicable', inplace=True)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 146,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "Age                 0\n",
       "Sex                 0\n",
       "Job                 0\n",
       "Housing             0\n",
       "Saving accounts     0\n",
       "Checking account    0\n",
       "Credit amount       0\n",
       "Duration            0\n",
       "Purpose             0\n",
       "Class               0\n",
       "dtype: int64"
      ]
     },
     "execution_count": 146,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df.isnull().sum()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 147,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "Not Applicable    394\n",
       "little            274\n",
       "moderate          269\n",
       "rich               63\n",
       "Name: Checking account, dtype: int64"
      ]
     },
     "execution_count": 147,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df['Checking account'].value_counts()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 148,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "little            603\n",
       "Not Applicable    183\n",
       "moderate          103\n",
       "quite rich         63\n",
       "rich               48\n",
       "Name: Saving accounts, dtype: int64"
      ]
     },
     "execution_count": 148,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df['Saving accounts'].value_counts()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 149,
   "metadata": {},
   "outputs": [],
   "source": [
    "# CONVERT SEX TO A BINARY INTEGER VARIABLE\n",
    "df['Sex'] = [1 if x == 'female' else 0 for x in df['Sex']]\n",
    "# CONVERT CLASS TO 0 and 1 INSTEAD OF 1 AND 2\n",
    "df['Class'] = [0 if x == 1 else 1 for x in df['Class']]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 150,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>Age</th>\n",
       "      <th>Sex</th>\n",
       "      <th>Job</th>\n",
       "      <th>Housing</th>\n",
       "      <th>Saving accounts</th>\n",
       "      <th>Checking account</th>\n",
       "      <th>Credit amount</th>\n",
       "      <th>Duration</th>\n",
       "      <th>Purpose</th>\n",
       "      <th>Class</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>67</td>\n",
       "      <td>0</td>\n",
       "      <td>2</td>\n",
       "      <td>own</td>\n",
       "      <td>Not Applicable</td>\n",
       "      <td>little</td>\n",
       "      <td>1169</td>\n",
       "      <td>6</td>\n",
       "      <td>radio/TV</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>22</td>\n",
       "      <td>1</td>\n",
       "      <td>2</td>\n",
       "      <td>own</td>\n",
       "      <td>little</td>\n",
       "      <td>moderate</td>\n",
       "      <td>5951</td>\n",
       "      <td>48</td>\n",
       "      <td>radio/TV</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>49</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>own</td>\n",
       "      <td>little</td>\n",
       "      <td>Not Applicable</td>\n",
       "      <td>2096</td>\n",
       "      <td>12</td>\n",
       "      <td>education</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>45</td>\n",
       "      <td>0</td>\n",
       "      <td>2</td>\n",
       "      <td>free</td>\n",
       "      <td>little</td>\n",
       "      <td>little</td>\n",
       "      <td>7882</td>\n",
       "      <td>42</td>\n",
       "      <td>furniture/equipment</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>53</td>\n",
       "      <td>0</td>\n",
       "      <td>2</td>\n",
       "      <td>free</td>\n",
       "      <td>little</td>\n",
       "      <td>little</td>\n",
       "      <td>4870</td>\n",
       "      <td>24</td>\n",
       "      <td>car</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "   Age  Sex  Job Housing Saving accounts Checking account  Credit amount  \\\n",
       "0   67    0    2     own  Not Applicable           little           1169   \n",
       "1   22    1    2     own          little         moderate           5951   \n",
       "2   49    0    1     own          little   Not Applicable           2096   \n",
       "3   45    0    2    free          little           little           7882   \n",
       "4   53    0    2    free          little           little           4870   \n",
       "\n",
       "   Duration              Purpose  Class  \n",
       "0         6             radio/TV      0  \n",
       "1        48             radio/TV      1  \n",
       "2        12            education      0  \n",
       "3        42  furniture/equipment      0  \n",
       "4        24                  car      1  "
      ]
     },
     "execution_count": 150,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df.head()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 151,
   "metadata": {},
   "outputs": [],
   "source": [
    "df.rename(index=str, columns={\"Saving accounts\": \"Saving_accounts\", \n",
    "                              \"Checking account\": \"Checking_account\", \n",
    "                              \"Credit amount\": \"Credit_amount\"}, inplace=True)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 152,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "Index([u'Age', u'Sex', u'Job', u'Housing', u'Saving_accounts',\n",
       "       u'Checking_account', u'Credit_amount', u'Duration', u'Purpose',\n",
       "       u'Class'],\n",
       "      dtype='object')"
      ]
     },
     "execution_count": 152,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df.columns"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 153,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "patsy_formula = \"Class~Age+Sex+C(Job)+Housing+C(Saving_accounts)+C(Checking_account)+Credit_amount+Duration+C(Purpose)- 1\""
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 160,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "corr_formula = patsy_formula = \"Class+Age+Sex+C(Job)+Housing+C(Saving_accounts)+C(Checking_account)+Credit_amount+Duration+C(Purpose)- 1\"\n",
    "corr_table = patsy.dmatrix(corr_formula, data=df, return_type=\"dataframe\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 154,
   "metadata": {},
   "outputs": [],
   "source": [
    "y, X = patsy.dmatrices(patsy_formula, data=df, return_type=\"dataframe\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 157,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "Index([u'C(Job)[0]', u'C(Job)[1]', u'C(Job)[2]', u'C(Job)[3]',\n",
       "       u'Housing[T.own]', u'Housing[T.rent]', u'C(Saving_accounts)[T.little]',\n",
       "       u'C(Saving_accounts)[T.moderate]', u'C(Saving_accounts)[T.quite rich]',\n",
       "       u'C(Saving_accounts)[T.rich]', u'C(Checking_account)[T.little]',\n",
       "       u'C(Checking_account)[T.moderate]', u'C(Checking_account)[T.rich]',\n",
       "       u'C(Purpose)[T.car]', u'C(Purpose)[T.domestic appliances]',\n",
       "       u'C(Purpose)[T.education]', u'C(Purpose)[T.furniture/equipment]',\n",
       "       u'C(Purpose)[T.radio/TV]', u'C(Purpose)[T.repairs]',\n",
       "       u'C(Purpose)[T.vacation/others]', u'Age', u'Sex', u'Credit_amount',\n",
       "       u'Duration'],\n",
       "      dtype='object')"
      ]
     },
     "execution_count": 157,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "X.columns"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 158,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>Age</th>\n",
       "      <th>Sex</th>\n",
       "      <th>Job</th>\n",
       "      <th>Credit_amount</th>\n",
       "      <th>Duration</th>\n",
       "      <th>Class</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>Age</th>\n",
       "      <td>1.000000</td>\n",
       "      <td>-0.161694</td>\n",
       "      <td>0.015673</td>\n",
       "      <td>0.032716</td>\n",
       "      <td>-0.036136</td>\n",
       "      <td>-0.091127</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Sex</th>\n",
       "      <td>-0.161694</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>-0.070298</td>\n",
       "      <td>-0.093482</td>\n",
       "      <td>-0.081432</td>\n",
       "      <td>0.075493</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Job</th>\n",
       "      <td>0.015673</td>\n",
       "      <td>-0.070298</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>0.285385</td>\n",
       "      <td>0.210910</td>\n",
       "      <td>0.032735</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Credit_amount</th>\n",
       "      <td>0.032716</td>\n",
       "      <td>-0.093482</td>\n",
       "      <td>0.285385</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>0.624984</td>\n",
       "      <td>0.154739</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Duration</th>\n",
       "      <td>-0.036136</td>\n",
       "      <td>-0.081432</td>\n",
       "      <td>0.210910</td>\n",
       "      <td>0.624984</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>0.214927</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Class</th>\n",
       "      <td>-0.091127</td>\n",
       "      <td>0.075493</td>\n",
       "      <td>0.032735</td>\n",
       "      <td>0.154739</td>\n",
       "      <td>0.214927</td>\n",
       "      <td>1.000000</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "                    Age       Sex       Job  Credit_amount  Duration     Class\n",
       "Age            1.000000 -0.161694  0.015673       0.032716 -0.036136 -0.091127\n",
       "Sex           -0.161694  1.000000 -0.070298      -0.093482 -0.081432  0.075493\n",
       "Job            0.015673 -0.070298  1.000000       0.285385  0.210910  0.032735\n",
       "Credit_amount  0.032716 -0.093482  0.285385       1.000000  0.624984  0.154739\n",
       "Duration      -0.036136 -0.081432  0.210910       0.624984  1.000000  0.214927\n",
       "Class         -0.091127  0.075493  0.032735       0.154739  0.214927  1.000000"
      ]
     },
     "execution_count": 158,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df.corr()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 162,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x1240330d0>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "mean_corr = corr_table.corr() #Set your correlation matrix.\n",
    "\n",
    "# Set the default matplotlib figure size:\n",
    "fig, ax = plt.subplots(figsize=(8,5))\n",
    "\n",
    "# Generate a mask for the upper triangle (taken from seaborn example gallery)\n",
    "mask = np.zeros_like(mean_corr, dtype=np.bool)\n",
    "mask[np.triu_indices_from(mask)] = True\n",
    "\n",
    "# Plot the heatmap with seaborn.\n",
    "# Assign the matplotlib axis the function returns. This will let us resize the labels.\n",
    "ax = sns.heatmap(mean_corr, mask=mask, ax=ax)\n",
    "\n",
    "# Resize the labels.\n",
    "ax.set_xticklabels(ax.xaxis.get_ticklabels(), fontsize=10, rotation = 90)\n",
    "ax.set_yticklabels(ax.yaxis.get_ticklabels(), fontsize=10, rotation = 0)\n",
    "\n",
    "# If you put plt.show() at the bottom, it prevents those useless printouts from matplotlib.\n",
    "plt.show();"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 178,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "ss = StandardScaler()\n",
    "Xs = ss.fit_transform(X)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 288,
   "metadata": {},
   "outputs": [
    {
     "ename": "ValueError",
     "evalue": "Found input variables with inconsistent numbers of samples: [1000, 442]",
     "output_type": "error",
     "traceback": [
      "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m",
      "\u001b[0;31mValueError\u001b[0m                                Traceback (most recent call last)",
      "\u001b[0;32m<ipython-input-288-73ca6476d7d5>\u001b[0m in \u001b[0;36m<module>\u001b[0;34m()\u001b[0m\n\u001b[1;32m      1\u001b[0m \u001b[0;31m# CREATE A TRAING AND TEST SPLIT\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m----> 2\u001b[0;31m \u001b[0mX_train\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mX_test\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0my_train\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0my_test\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mtrain_test_split\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mXs\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0my\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mtest_size\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0;36m0.1\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mstratify\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0my\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mrandom_state\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0;36m42\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m",
      "\u001b[0;32m//anaconda/lib/python2.7/site-packages/sklearn/model_selection/_split.pyc\u001b[0m in \u001b[0;36mtrain_test_split\u001b[0;34m(*arrays, **options)\u001b[0m\n\u001b[1;32m   1687\u001b[0m         \u001b[0mtest_size\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0;36m0.25\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m   1688\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m-> 1689\u001b[0;31m     \u001b[0marrays\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mindexable\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m*\u001b[0m\u001b[0marrays\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m   1690\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m   1691\u001b[0m     \u001b[0;32mif\u001b[0m \u001b[0mstratify\u001b[0m \u001b[0;32mis\u001b[0m \u001b[0;32mnot\u001b[0m \u001b[0mNone\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n",
      "\u001b[0;32m//anaconda/lib/python2.7/site-packages/sklearn/utils/validation.pyc\u001b[0m in \u001b[0;36mindexable\u001b[0;34m(*iterables)\u001b[0m\n\u001b[1;32m    204\u001b[0m         \u001b[0;32melse\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m    205\u001b[0m             \u001b[0mresult\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mappend\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mnp\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0marray\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mX\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 206\u001b[0;31m     \u001b[0mcheck_consistent_length\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m*\u001b[0m\u001b[0mresult\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m    207\u001b[0m     \u001b[0;32mreturn\u001b[0m \u001b[0mresult\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m    208\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n",
      "\u001b[0;32m//anaconda/lib/python2.7/site-packages/sklearn/utils/validation.pyc\u001b[0m in \u001b[0;36mcheck_consistent_length\u001b[0;34m(*arrays)\u001b[0m\n\u001b[1;32m    179\u001b[0m     \u001b[0;32mif\u001b[0m \u001b[0mlen\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0muniques\u001b[0m\u001b[0;34m)\u001b[0m \u001b[0;34m>\u001b[0m \u001b[0;36m1\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m    180\u001b[0m         raise ValueError(\"Found input variables with inconsistent numbers of\"\n\u001b[0;32m--> 181\u001b[0;31m                          \" samples: %r\" % [int(l) for l in lengths])\n\u001b[0m\u001b[1;32m    182\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m    183\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n",
      "\u001b[0;31mValueError\u001b[0m: Found input variables with inconsistent numbers of samples: [1000, 442]"
     ]
    }
   ],
   "source": [
    "# CREATE A TRAING AND TEST SPLIT\n",
    "X_train, X_test, y_train, y_test = train_test_split(Xs, y, test_size=0.1, stratify=y, random_state=42)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 289,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "(800, 24)\n",
      "(200, 24)\n",
      "(800, 1)\n",
      "(200, 1)\n"
     ]
    }
   ],
   "source": [
    "print X_train.shape\n",
    "print X_test.shape\n",
    "print y_train.shape\n",
    "print y_test.shape"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 290,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "LogisticRegression(C=1.0, class_weight=None, dual=False, fit_intercept=True,\n",
       "          intercept_scaling=1, max_iter=100, multi_class='ovr', n_jobs=1,\n",
       "          penalty='l2', random_state=6, solver='liblinear', tol=0.0001,\n",
       "          verbose=0, warm_start=False)"
      ]
     },
     "execution_count": 290,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "lr = LogisticRegression(random_state=6)\n",
    "lr.fit(X_train, y_train)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 291,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([[  9.33202369e-03,   4.41918737e-03,  -6.05768873e-03,\n",
       "         -5.96589898e-04,  -8.12622269e-02,   1.19120074e-01,\n",
       "          4.57270386e-01,   2.72672239e-01,   9.85302543e-02,\n",
       "         -6.03155771e-02,   7.41036018e-01,   5.91209560e-01,\n",
       "          2.32638130e-01,   3.69466013e-03,  -2.03130108e-03,\n",
       "          1.95533638e-01,  -2.72735311e-02,  -1.49067401e-01,\n",
       "          8.44123500e-02,  -9.44610892e-02,  -4.31049297e-02,\n",
       "          1.97774269e-01,   3.26380702e-02,   4.72764143e-01]])"
      ]
     },
     "execution_count": 291,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "lr.coef_"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 292,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "             precision    recall  f1-score   support\n",
      "\n",
      "        0.0       0.78      0.89      0.83       140\n",
      "        1.0       0.62      0.40      0.48        60\n",
      "\n",
      "avg / total       0.73      0.74      0.73       200\n",
      "\n"
     ]
    }
   ],
   "source": [
    "print classification_report(y_test, lr.predict(X_test))"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "A sample logistic regression using default parameters gives us about 0.74 precision, which is not terrible but we can do much better than this."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 266,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "parameters = {\n",
    "    'clf__penalty': ['l1, ''l2'],\n",
    "    'clf__C': [0.001, 1, 10, 100],\n",
    "}\n",
    "\n",
    "clf = LogisticRegression()\n",
    "\n",
    "# solver : {'newton-cg', 'lbfgs', 'liblinear', 'sag'}, default: 'liblinear'\n",
    "#     Algorithm to use in the optimization problem.\n",
    "\n",
    "#     - For small datasets, 'liblinear' is a good choice, whereas 'sag' is\n",
    "#         faster for large ones.\n",
    "#     - For multiclass problems, only 'newton-cg', 'sag' and 'lbfgs' handle\n",
    "#         multinomial loss; 'liblinear' is limited to one-versus-rest\n",
    "#         schemes.\n",
    "#     - 'newton-cg', 'lbfgs' and 'sag' only handle L2 penalty.\n",
    "\n",
    "#     Note that 'sag' fast convergence is only guaranteed on features with\n",
    "#     approximately the same scale. You can preprocess the data with a\n",
    "#     scaler from sklearn.preprocessing.\n",
    "\n",
    "#     .. versionadded:: 0.17\n",
    "#        Stochastic Average Gradient descent solver."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 267,
   "metadata": {},
   "outputs": [],
   "source": [
    "grid_search = GridSearchCV(clf, parameters, n_jobs=-1, verbose=1, cv=2)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 280,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "# CREATE A PLOTTING FUNCTION FOR CONFUSION MATRIX FOR REUSE\n",
    "def plot_confusion_matrix(cm, classes, title='Confusion matrix', cmap=plt.cm.bone):\n",
    "    plt.imshow(cm, interpolation='nearest', cmap=cmap)\n",
    "    plt.title(title, fontdict=font)\n",
    "#     plt.colorbar()\n",
    "    tick_marks = np.arange(len(classes))\n",
    "    plt.xticks(tick_marks, classes)\n",
    "    plt.yticks(tick_marks, classes)\n",
    "    thresh = cm.max() / 2.\n",
    "    for i, j in itertools.product(range(cm.shape[0]), range(cm.shape[1])):\n",
    "        plt.text(j, i, cm[i, j],\n",
    "                 horizontalalignment=\"center\",\n",
    "                 color=\"black\" if cm[i, j] > thresh else \"white\",\n",
    "                fontdict=font)\n",
    "    plt.ylabel('True label', fontdict=font, fontsize=10)\n",
    "    plt.xlabel('Predicted label', fontdict=font, fontsize=10)\n",
    "    plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 287,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Grid:\n",
      "GridSearchCV(cv=None, error_score='raise',\n",
      "       estimator=Ridge(alpha=1.0, copy_X=True, fit_intercept=True, max_iter=None,\n",
      "   normalize=False, random_state=None, solver='auto', tol=0.001),\n",
      "       fit_params={}, iid=True, n_jobs=1,\n",
      "       param_grid={'alpha': array([  1.00000e-10,   1.00000e-09,   1.00000e-08,   1.00000e-07,\n",
      "         1.00000e-06,   1.00000e-05,   1.00000e-04,   1.00000e-03,\n",
      "         1.00000e-02,   1.00000e-01,   1.00000e+00,   1.00000e+01,\n",
      "         1.00000e+02,   1.00000e+03,   1.00000e+04,   1.00000e+05,\n",
      "         1.00000e+06,   1.00000e+07,   1.00000e+08,   1.00000e+09,\n",
      "         1.00000e+10])},\n",
      "       pre_dispatch='2*n_jobs', refit=True, return_train_score=True,\n",
      "       scoring=None, verbose=0)\n",
      "\n",
      "Best score:\n",
      "0.136156618717\n",
      "Best estimator alpha: \n",
      "100.0\n",
      "Classification Report: \n",
      "             precision    recall  f1-score   support\n",
      "\n",
      "        0.0       0.78      0.89      0.83       140\n",
      "        1.0       0.62      0.40      0.48        60\n",
      "\n",
      "avg / total       0.73      0.74      0.73       200\n",
      "\n"
     ]
    }
   ],
   "source": [
    "import numpy as np\n",
    "from sklearn import datasets\n",
    "from sklearn.linear_model import Ridge, Lasso\n",
    "from sklearn.model_selection import GridSearchCV\n",
    "\n",
    "\n",
    "#Prepare a range of alpha values to test\n",
    "alphas = np.logspace(-10,10,21)\n",
    "\n",
    "#Create a dictionary with the gridsearch parameters\n",
    "params = {'alpha': alphas}\n",
    "\n",
    "#Create and Fit a Ridge Regression Model, Testing Each Alpha\n",
    "model = Ridge()\n",
    "grid = GridSearchCV(estimator=model, param_grid=params)\n",
    "grid.fit(X_train,y_train)\n",
    "\n",
    "print \"Grid:\\n\", grid\n",
    "print \n",
    "#Summarize the Results of the Grid Search\n",
    "print \"Best score:\\n\", grid.best_score_\n",
    "print \"Best estimator alpha: \\n\", grid.best_estimator_.alpha\n",
    "print \"Classification Report: \\n\", classification_report(y_test, lr.predict(X_test))\n",
    "# plot_confusion_matrix(confusion_matrix(y_test, grid.predict(X_test)), model.classes_)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 277,
   "metadata": {},
   "outputs": [
    {
     "ename": "IndexError",
     "evalue": "too many indices for array",
     "output_type": "error",
     "traceback": [
      "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m",
      "\u001b[0;31mIndexError\u001b[0m                                Traceback (most recent call last)",
      "\u001b[0;32m<ipython-input-277-79fead2bcf0e>\u001b[0m in \u001b[0;36m<module>\u001b[0;34m()\u001b[0m\n\u001b[0;32m----> 1\u001b[0;31m \u001b[0mgrid_search\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mfit\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mX_train\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0my_train\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m",
      "\u001b[0;32m//anaconda/lib/python2.7/site-packages/sklearn/grid_search.pyc\u001b[0m in \u001b[0;36mfit\u001b[0;34m(self, X, y)\u001b[0m\n\u001b[1;32m    827\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m    828\u001b[0m         \"\"\"\n\u001b[0;32m--> 829\u001b[0;31m         \u001b[0;32mreturn\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_fit\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mX\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0my\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mParameterGrid\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mparam_grid\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m    830\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m    831\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n",
      "\u001b[0;32m//anaconda/lib/python2.7/site-packages/sklearn/grid_search.pyc\u001b[0m in \u001b[0;36m_fit\u001b[0;34m(self, X, y, parameter_iterable)\u001b[0m\n\u001b[1;32m    550\u001b[0m                                  \u001b[0;34m'of samples (%i) than data (X: %i samples)'\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m    551\u001b[0m                                  % (len(y), n_samples))\n\u001b[0;32m--> 552\u001b[0;31m         \u001b[0mcv\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mcheck_cv\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mcv\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mX\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0my\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mclassifier\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mis_classifier\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mestimator\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m    553\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m    554\u001b[0m         \u001b[0;32mif\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mverbose\u001b[0m \u001b[0;34m>\u001b[0m \u001b[0;36m0\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n",
      "\u001b[0;32m//anaconda/lib/python2.7/site-packages/sklearn/cross_validation.pyc\u001b[0m in \u001b[0;36mcheck_cv\u001b[0;34m(cv, X, y, classifier)\u001b[0m\n\u001b[1;32m   1821\u001b[0m         \u001b[0;32mif\u001b[0m \u001b[0mclassifier\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m   1822\u001b[0m             \u001b[0;32mif\u001b[0m \u001b[0mtype_of_target\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0my\u001b[0m\u001b[0;34m)\u001b[0m \u001b[0;32min\u001b[0m \u001b[0;34m[\u001b[0m\u001b[0;34m'binary'\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m'multiclass'\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m-> 1823\u001b[0;31m                 \u001b[0mcv\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mStratifiedKFold\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0my\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mcv\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m   1824\u001b[0m             \u001b[0;32melse\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m   1825\u001b[0m                 \u001b[0mcv\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mKFold\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0m_num_samples\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0my\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mcv\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n",
      "\u001b[0;32m//anaconda/lib/python2.7/site-packages/sklearn/cross_validation.pyc\u001b[0m in \u001b[0;36m__init__\u001b[0;34m(self, y, n_folds, shuffle, random_state)\u001b[0m\n\u001b[1;32m    567\u001b[0m         \u001b[0;32mfor\u001b[0m \u001b[0mtest_fold_idx\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mper_label_splits\u001b[0m \u001b[0;32min\u001b[0m \u001b[0menumerate\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mzip\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m*\u001b[0m\u001b[0mper_label_cvs\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m    568\u001b[0m             \u001b[0;32mfor\u001b[0m \u001b[0mlabel\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m(\u001b[0m\u001b[0m_\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mtest_split\u001b[0m\u001b[0;34m)\u001b[0m \u001b[0;32min\u001b[0m \u001b[0mzip\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0munique_labels\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mper_label_splits\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 569\u001b[0;31m                 \u001b[0mlabel_test_folds\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mtest_folds\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0my\u001b[0m \u001b[0;34m==\u001b[0m \u001b[0mlabel\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m    570\u001b[0m                 \u001b[0;31m# the test split can be too big because we used\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m    571\u001b[0m                 \u001b[0;31m# KFold(max(c, self.n_folds), self.n_folds) instead of\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n",
      "\u001b[0;31mIndexError\u001b[0m: too many indices for array"
     ]
    }
   ],
   "source": [
    "grid_search.fit(X_train, y_train)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "anaconda-cloud": {},
  "kernelspec": {
   "display_name": "Python [conda root]",
   "language": "python",
   "name": "conda-root-py"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 2
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython2",
   "version": "2.7.13"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 2
}
